/**
 * Created by fangcailiang on 16/6/15.
 */

/*
    求两个正整数的 最大公约数， 如 60， 24 的最大公约数为 12
 */

/**
 * 使用 转转相除法: 使用较大的数除以较小的数，如果余数不为 0，则继续以原来较小的数除以余数，
 * 直到余数为0，则返回当前较小的数为最大公约数
 * @param m
 * @param n
 */
function gcd1(m, n){
    let max = (m > n) ? m : n;
    let min = (m > n) ? n : m;

    while(((max % min) != 0)){
        let r = max % min;
        max = min;
        min = r;
    }
    return min;
}

console.log(gcd1(21, 60));

/**
 * 使用 递归调用
 * @param m
 * @param n
 * @returns {*}
 */
function gcd2(m, n){
    var max = (m > n) ? m : n;
    var min = (m > n) ? n : m;
    if(((max % min) != 0)){
        var r = max % min;
        return gcd2(min, r);
    }else{
        return min;
    }
}
console.log(gcd2(24, 60));